#include <stdio.h>

typedef int (*MPFunc)(int, int);

int plus(int a, int b) {
    return a + b;
}

int minus(int a, int b) {
    return a - b;
}

//
// Created by Ctzzz on 2024/4/14.
//
int main(void) {
    // 定义变量
//    int a[5] = {1, 2, 3, 4, 5};
//    int b[6] = {1, 2, 3};
//    char c[] = "abcde";
//    char d[6] = "abcdef";

//    int a  = 10;
//    int *p = &a;
//    int **pp = &p;
//    **pp = 20;
//    printf("a = %d\n", a);

//    int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
//    int(*p)[4];
//    p = a;
//    int i, j;
//    for (i = 0; i < 3; i++) {
//        for (j = 0; j < 4; j++) {
//            printf("%d ", *(*(p + i) + j));
//        }
//        printf("\n");
//    }

    /*  函数指针测试，意思是一个指针类型的变量，指向一个函数  */
    int x = 5, y = 6;
    MPFunc pFunc;

    printf("%p\n", plus);
    pFunc = plus;
    printf("%d\n", pFunc(x, y));

    pFunc = minus;
    printf("%d\n", pFunc(x, y));

    /* 万能指针 ,void就代表不定型，后续可以强转成其他类型，类似java的多态，如泛型T*/
    void* p;


    return 0;
}
